/**
 * @Author: Jiang Zhongxun
 * @Date: 2025-02-18 21:41:18
 * @FilePath: \CAR_REG\Int\Int_TB6612.h
 * @Description: 电机驱动
 * @Copyright (c) 2025 by JiangZhongxun, All Rights Reserved.
 */
#ifndef __INT_TB6612_H
#define __INT_TB6612_H

#include "stm32f10x.h"
#include "Dri_TIM.h"

/*==============================================
电机转动方向的宏定义
==============================================*/
#define GO 0   // 电机前进
#define BACK 1 // 电机后退
#define STOP 2 // 电机刹车

/*==============================================
电机控制引脚高低电平的宏定义
==============================================*/
#define AIN1_L (GPIOB->ODR &= ~GPIO_ODR_ODR14)
#define AIN1_H (GPIOB->ODR |= GPIO_ODR_ODR14)
#define AIN2_L (GPIOB->ODR &= ~GPIO_ODR_ODR15)
#define AIN2_H (GPIOB->ODR |= GPIO_ODR_ODR15)
#define BIN1_L (GPIOB->ODR &= ~GPIO_ODR_ODR13)
#define BIN1_H (GPIOB->ODR |= GPIO_ODR_ODR13)
#define BIN2_L (GPIOB->ODR &= ~GPIO_ODR_ODR12)
#define BIN2_H (GPIOB->ODR |= GPIO_ODR_ODR12)

/**
 * @description: TB6612初始化
 * @param {*} 无参
 * @return {*} 无返回值
 */
void Int_TB6612_Init(void);

/**
 * @description: 控制电机A的方向
 * @param {uint8_t} direct 期望的转动方向
 * @return {*} 无返回值
 */
void Int_TB6612_MotorA(uint8_t direct);

/**
 * @description: 控制电机B的方向
 * @param {uint8_t} direct 期望的转动方向
 * @return {*} 无返回值
 */
void Int_TB6612_MotorB(uint8_t direct);

/**
 * @description: 根据带符号的PWM值，设置电机的转速和方向
 * @param {int} pwma A电机，带符号
 * @param {int} pwmb B电机，带符号
 * @return {*} 无返回值
 */
void Int_TB6612_SetPWM(int pwma, int pwmb);

#endif
